package com.missyoubug.easyjtest.util;

import java.util.HashMap;
import java.util.Map;

public class TypeResolver {

    private static final Map<String, Class<?>> PRIMITIVE_TYPE_MAP = new HashMap<>();

    static {
        // 初始化基本类型映射
        PRIMITIVE_TYPE_MAP.put("int", Integer.TYPE);
        PRIMITIVE_TYPE_MAP.put("boolean", Boolean.TYPE);
        PRIMITIVE_TYPE_MAP.put("byte", Byte.TYPE);
        PRIMITIVE_TYPE_MAP.put("char", Character.TYPE);
        PRIMITIVE_TYPE_MAP.put("short", Short.TYPE);
        PRIMITIVE_TYPE_MAP.put("long", Long.TYPE);
        PRIMITIVE_TYPE_MAP.put("float", Float.TYPE);
        PRIMITIVE_TYPE_MAP.put("double", Double.TYPE);

        // 添加包装类的支持
        PRIMITIVE_TYPE_MAP.put("java.lang.Integer", Integer.class);
        PRIMITIVE_TYPE_MAP.put("java.lang.Boolean", Boolean.class);
        PRIMITIVE_TYPE_MAP.put("java.lang.Byte", Byte.class);
        PRIMITIVE_TYPE_MAP.put("java.lang.Character", Character.class);
        PRIMITIVE_TYPE_MAP.put("java.lang.Short", Short.class);
        PRIMITIVE_TYPE_MAP.put("java.lang.Long", Long.class);
        PRIMITIVE_TYPE_MAP.put("java.lang.Float", Float.class);
        PRIMITIVE_TYPE_MAP.put("java.lang.Double", Double.class);
        PRIMITIVE_TYPE_MAP.put("java.lang.String", String.class);
        // 如果有其他自定义类型，可以继续添加
    }

    public static Class<?> resolveType(String typeName) throws ClassNotFoundException {
        if (PRIMITIVE_TYPE_MAP.containsKey(typeName)) {
            return PRIMITIVE_TYPE_MAP.get(typeName);
        } else {
            return Class.forName(typeName);
        }
    }
}